import os


def usr_rename():
    # rename : 重命名方法
    os.rename('dir1/file1', 'dir1/file2')


def usr_remove():
    # remove : 删除文件方法
    os.remove("dir1/file2")


def usr_dir_func():
    # listdir : 返回指定目录下的文件的名字列表
    file_list = os.listdir(".")  # . 表示当前目录
    print(file_list)
    # # mkdir ： 创建空目录
    # os.mkdir("dir2")
    # # rmdir : 删除空目录，否则会报错
    # os.rmdir("dir2")

    # getcwd : 和linux命令的pwd一样，打印文件的绝对路径
    print(os.getcwd())
    # chdir : 类似于cd，改变进程的读取的相对路径
    # 为什么执行chdir后，终端的路径没改变：因为是两个进程，当然不会影响
    os.chdir("dir2")
    print(os.getcwd())
    fd = open("file1", mode="w", encoding="utf8")
    fd.close()


def scan_dir_DFS(current_path, width):
    # 得到当前文件夹下的所有文件的文件名
    file_list = os.listdir(current_path)
    for file_name in file_list:
        print(" " * width, file_name)
        file_path = current_path + '/' + file_name  # 拼接路径
        # 若当前遍历到的文件是目录，则进一步调用
        if os.path.isdir(file_path):
            scan_dir_DFS(file_path, width + 4)


def usr_stat(file_path):
    # stat ：获得文件的文件对象，包含文件的详细信息
    file_stat = os.stat(file_path)
    print('size{},uid{},mode{:x},mtime{}'.format(file_stat.st_size, file_stat.st_uid,
                                                 file_stat.st_mode, file_stat.st_mtime))
    from time import strftime
    from time import gmtime
    gm_time = gmtime(file_stat.st_mtime)
    # 把秒数转为字符串时间
    print(strftime("%Y-%m-%d %H:%M:%S", gm_time))


if __name__ == '__main__':
    # usr_rename()
    # usr_remove()
    # usr_dir_func()
    # scan_dir_DFS(".", 0)
    usr_stat("dir1/file1_dir1")